package DAO;

import Domain.UserBean;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import util.RegisForJdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public interface DoForUser {


    /**
     * 定义一个方法 对用户进行注册 成功返回true 失败返回false
     * @return true or false
     */
    public static boolean doRegister(UserBean user){
        // 首先判断用户是否为空，不为空则进行下一步操作
        if(user==null)
            return false;
        // 调用spring框架中对与数据库的操作，返回一个JdbcTemplate对象,方便对数据库进行增删查改操作
        JdbcTemplate template = new JdbcTemplate(RegisForJdbc.getDataSource());
        // 定义需要用的sql语句，并采用PreparedStatement的方法，防止Sql注入问问题
        String sql = "insert into user(user_id,user_name,user_password,user_sex,user_phone,user_address,user_email) values(?,?,?,?,?,?,?)";
        // 调用数据库连接池中的方法update，对数据库进行添加，以对象的形式进行添加
        int update = template.update(sql,null, user.getUser_name(), user.getUser_password(), null, user.getUser_phone(), user.getUser_address(), user.getUser_email());
        // 操作成功返回true
        return update>0;


    }

    /**
     * 定义一个方法 ，使用户进行登录
     * @return
     */
    public boolean doLogin();

    /**
     * 定义一个方法 对用户的数据进行更新
     * @return
     */
    public boolean doUpdate();

    /**
     * 定义一个方法，对用户的身份进行验证（对用户名和密码进行验证，看是否正确）
     * @param user
     * @return
     */
    public static UserBean checkUser(UserBean user) {
        // 调用spring框架中对与数据库的操作，返回一个JdbcTemplate对象,方便对数据库进行增删查改操作
        JdbcTemplate template = new JdbcTemplate(RegisForJdbc.getDataSource());

        if (user==null)
            return null;

        String sql = "select * from user where user_name = ? and user_password = ?";

        try {
            UserBean userBean = template.queryForObject(sql, new BeanPropertyRowMapper<UserBean>(UserBean.class), user.getUser_name(), user.getUser_password());
            return userBean;
        }catch (Exception e){
            System.out.println("这里有问题！！");
            return null;
        }



    }


}
